import { options } from "less";

const common = {};

common.memberOptions = [
  // 谁可以发起这个审批（0全员，1指定人员，2所有人不能发起）
  { label: "全员可发起", value: 0 },
  { label: "指定人员可发起", value: 1 },
  { label: "所有人不能发起", value: 2 },
];

// 控件类型
common.controls = [
  {
    type: "text",
    title: "文本",
    list: [
      {
        // 类型
        type: "input",
        title: "单行文本",
        // 图标
        icon: "workApproval--danhangwenben",
        // 可设置字段
        setting: {
          name: "单行文本",
          placeholder: "请输入",
          setDefault: false,
          defaultValue: "",
          required: true,
        },
      },
      {
        type: "textarea",
        title: "多行文本",
        icon: "workApproval--duohangwenben",
        setting: {
          name: "多行文本",
          placeholder: "请输入",
          setDefault: false,
          defaultValue: "",
          required: true,
        },
      },
      {
        type: "tips",
        title: "说明",
        icon: "workApproval-tishishuoming",
        setting: {
          name: "说明",
          placeholder: "提示文字",
        },
      },
    ],
  },
  {
    type: "number",
    title: "数值",
    list: [
      {
        type: "number",
        title: "数字",
        icon: "workApproval-shuzi",
        tips: "身份证、银行卡等超过 15 位数的情况，请使用文本控件",
        setting: {
          name: "数字",
          placeholder: "请输入",
          unit: "",
          range: {
            min: "",
            max: "",
          },
          required: true,
        },
      },
      {
        type: "amount",
        title: "金额",
        icon: "workApproval-jine1",
        setting: {
          name: "金额",
          placeholder: "请输入",
          range: {
            min: "",
            max: "",
          },
          required: true,
        },
      },
    ],
  },
  {
    type: "select",
    title: "选项",
    list: [
      {
        type: "radio",
        title: "单选",
        icon: "workApproval-danxuankuang-xuanzhong-02",
        setting: {
          name: "单选",
          placeholder: "请选择",
          options: [],
          setDefault: false,
          defaultValue: undefined,
          required: true,
        },
      },
      {
        type: "check",
        title: "多选",
        icon: "workApproval-duoxuan",
        setting: {
          name: "多选",
          placeholder: "请选择",
          options: [],
          required: true,
        },
      },
    ],
  },
  {
    type: "date",
    title: "日期",
    list: [
      {
        type: "date",
        title: "日期",
        icon: "workApproval-rili",
        setting: {
          name: "日期",
          placeholder: "请选择",
          // 日期选择类型 ["date", "datetime"]
          dateType: "date",
          required: true,
        },
      },
      {
        type: "daterange",
        title: "日期区间",
        icon: "workApproval-rili1",
        setting: {
          name: ["开始时间", "结束时间", "时长"],
          placeholder: "请选择",
          durationChange: true,
          dateType: "date",
          required: true,
        },
      },
      {
        type: "time",
        title: "时间",
        icon: "workApproval-rili1",
        setting: {
          name: "时间",
          placeholder: "请选择",
          required: true,
        },
      },
    ],
  },
  {
    type: "other",
    title: "其他",
    list: [
      {
        type: "detail",
        title: "明细",
        icon: "workApproval-rili",
        setting: {
          name: "明细",
        },
        formList: [],
      },
      {
        type: "image",
        title: "图片",
        icon: "workApproval-tupian1",
        setting: {
          name: "图片",
          required: true,
        },
      },
      {
        type: "file",
        title: "附件",
        icon: "workApproval-fujianwenjianjia",
        setting: {
          name: "附件",
          required: true,
        },
      },
      //   { type: "contacts", title: "联系人", icon: "workApproval-lianxiren" },
      {
        type: "phone",
        title: "电话",
        icon: "workApproval-31dianhua",
        setting: {
          name: "手机",
          placeholder: "请输入手机号码",
          required: true,
        },
      },
      {
        type: "project",
        title: "选择项目",
        icon: "workApproval-xuanzexiangmu",
        setting: {
          name: "选择项目",
          placeholder: "请选择项目",
          required: false,
        },
      },
    ],
  },
];

// 控件组
const controlCombine = [];

// 验证控件是否填写
common.getFormDesignErrorInfo = (list) => {
  let step = 1;
  let errorList = [];
  list.forEach((listItem) => {
    const { setting, type } = listItem;
    // 名称
    if (!setting.name) {
      errorList.push({
        step,
        tip: `存在${listItem.title}控件未设置名称`,
      });
    }
    if (listItem.type == "daterange") {
      const index = setting.name.findIndex((item) => !item);
      if (index > -1) {
        errorList.push({
          step,
          tip: `存在${listItem.title}控件未设置名称`,
        });
      }
    }
    // 选项
    if (setting.options) {
      if (!setting.options.length) {
        errorList.push({
          step,
          tip: `${setting.name}控件未设置选项值`,
        });
      } else {
        for (let item of setting.options) {
          if (!item) {
            errorList.push({
              step,
              tip: `${setting.name}控件存在选项值没有填写内容`,
            });
          }
        }
      }
    }
    // 默认值
    if (setting.setDefault == true && !setting.defaultValue) {
      errorList.push({
        step,
        tip: `${setting.name}控件未设置默认值`,
      });
    }
    // 明细
    if (type == "detail" && !listItem.formList.length) {
      errorList.push({
        step,
        tip: `明细内至少需包含一个控件`,
      });
    }
  });
  return errorList;
};

// 流程设计

// 流程添加类型
common.addTypeList = [
  { type: "approval", title: "审批人" },
  { type: "copy", title: "抄送人" },
  { type: "deal", title: "办理人" },
];

// 流程处理人类型
common.dealerType = [
  { label: "上级", value: 1 },
  { label: "部门负责人", value: 2 },
  { label: "指定成员", value: 3 },
  { label: "提交人本人", value: 4 },
];
// 上级类型
common.higherLevelType = [
  { label: "直属上级", value: 1 },
  { label: "直属上级加1级", value: 2 },
  { label: "直属上级加2级", value: 3 },
  { label: "直属上级加3级", value: 4 },
  { label: "直属上级加4级", value: 5 },
  { label: "直属上级加5级", value: 6 },
  { label: "直属上级加6级", value: 7 },
  { label: "直属上级加7级", value: 8 },
  { label: "直属上级加8级", value: 9 },
  { label: "直属上级加9级", value: 10 },
  { label: "直属上级加10级", value: 11 },
];
// 负责人类型
common.leaderType = [
  { label: "直属部门负责人", value: 1 },
  { label: "直属部门负责人加1级", value: 2 },
  { label: "直属部门负责人加2级", value: 3 },
  { label: "直属部门负责人加3级", value: 4 },
  { label: "直属部门负责人加4级", value: 5 },
  { label: "直属部门负责人加5级", value: 6 },
  { label: "直属部门负责人加6级", value: 7 },
  { label: "直属部门负责人加7级", value: 8 },
  { label: "直属部门负责人加8级", value: 9 },
  { label: "直属部门负责人加9级", value: 10 },
  { label: "直属部门负责人加10级", value: 11 },
];

// 审批类型
common.approvalType = [{ label: "人工审批", value: 1 }];

// 审批人为空时
common.approverEmpty = [
  { label: "自动通过", value: 1 },
  { label: "指定人员审批", value: 2 },
  { label: "转交给审批管理员", value: 3 },
];
// 办理人为空时
common.dealerEmpty = [
  { label: "指定人员办理", value: 2 },
  { label: "转交给审批管理员", value: 3 },
];

// 多人审批时采用的审批方式
common.approvalWay = [
  { label: "会签（需所有人审批同意）", value: 1 },
  { label: "或签（一名审批人同意即可）", value: 2 },
];

// 审批人与提交人为同一人时
common.selfApprove = [
  { label: "由提交人对自己审批", value: 1 },
  { label: "自动跳过", value: 2 },
  { label: "转交给直属上级审批", value: 3 },
  { label: "转交给部门负责人审批", value: 4 },
];

// 审批人、抄送人、处理人卡片模板
common.defaultMemberCard = {
  type: 1, // 流程处理人类型
  key: "default",
  higherLevelType: 1, // 上级类型
  leaderType: 1, // 负责人类型
  memberList: [], // 指定成员uid
};

common.defaultApproval = {
  type: "approval",
  typeTxt: "审批",
  dealerTxt: ["审批人：上级"], // 处理人
  key: "approval_default",
  data: {
    name: "审批", // 名称
    approvalType: 1,
    approver: [JSON.parse(JSON.stringify(common.defaultMemberCard))], // 审批人
    approverEmpty: 3, // 审批人为空的处理类型
    emptyMember: [], // 审批人为空时指定人员审批
    emptyAdmin: undefined, // 审批人为空时转交给审批管理员uid
    approvalWay: 1, // 多人审批时采用的审批方式
    selfApprove: 1, // 审批人与提交人为同一人时处理类型
    ccList: [], // 抄送人
    controlsRead: [],
  },
};
common.defaultDealer = {
  type: "deal",
  typeTxt: "办理",
  dealerTxt: [],
  key: "deal_default",
  data: {
    name: "办理",
    dealer: [JSON.parse(JSON.stringify(common.defaultMemberCard))], // 办理人
    dealerEmpty: 3, //办理人为空的处理类型
    emptyMember: [], // 办理人为空时指定人员办理
    emptyAdmin: undefined, // 审批人为空时转交给审批管理员uid
    controlsRead: [],
  },
};
common.defaultCopy = {
  type: "copy",
  typeTxt: "抄送",
  dealerTxt: [],
  key: "copy_default",
  data: {
    name: "抄送",
    ccList: [JSON.parse(JSON.stringify(common.defaultMemberCard))],
    controlsRead: [],
  },
};

common.defaultProcess = [
  {
    type: "start",
    typeTxt: "发起",
    key: "start",
    dealerTxt: [],
    data: {
      name: "发起",
      ccList: [],
      controlsRead: [],
    },
  },
  JSON.parse(JSON.stringify(common.defaultApproval)),
  {
    type: "end",
    typeTxt: "结束",
    key: "end",
    dealerTxt: [],
    data: {
      name: "结束",
      ccList: [],
      controlsRead: [],
    },
  },
];

common.getProcessDesignErrorInfo = (list) => {
  let errorList = [];
  list.forEach((item) => {
    if (item.error) {
      errorList.push({
        step: 2,
        tip: item.error,
      });
    }
  });
  return errorList;
};

export default common;
